gesture: Limit API calls to non-denied sequences
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 21 Mar 2014 17:09:38 +0000 (18:09 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Fri, 23 May 2014 17:54:23 +0000 (19:54 +0200)
Gestures do track those internally, but information about those
shouldn't be leaked on calls.

gtk/gtkgesture.c

index e1ba1009aa950bb35bb7b1ad6449d515aafb1f45..c24fc596063de6a307264e66045d344cde5c15cd 100644 (file)
@@ -915,13 +915,9 @@ gtk_gesture_get_bounding_box_center (GtkGesture *gesture,
 gboolean
 gtk_gesture_is_active (GtkGesture *gesture)
 {
-  GtkGesturePrivate *priv;
-
   g_return_val_if_fail (GTK_IS_GESTURE (gesture), FALSE);
 
-  priv = gtk_gesture_get_instance_private (gesture);
-
-  return g_hash_table_size (priv->points) != 0;
+  return _gtk_gesture_effective_n_points (gesture) != 0;
 }
 
 /**
@@ -989,12 +985,20 @@ gtk_gesture_handles_sequence (GtkGesture       *gesture,
                               GdkEventSequence *sequence)
 {
   GtkGesturePrivate *priv;
+  PointData *data;
 
   g_return_val_if_fail (GTK_IS_GESTURE (gesture), FALSE);
 
   priv = gtk_gesture_get_instance_private (gesture);
+  data = g_hash_table_lookup (priv->points, sequence);
 
-  return g_hash_table_contains (priv->points, sequence);
+  if (!data)
+    return FALSE;
+
+  if (data->state == GTK_EVENT_SEQUENCE_DENIED)
+    return FALSE;
+
+  return TRUE;
 }
 
 /**